// src/api/judge.js
import request from '@/utils/request'

/**
 * 新增或更新评委
 * @param {Object} data - Judge 对象
 */
export function saveJudge(data) {
    return request({
        url: '/judge',
        method: 'post',
        data
    })
}

/**
 * 批量新增或更新评委
 * @param {Array} judges - Judge 对象数组
 */
export function saveJudgeBatch(judges) {
    return request({
        url: '/judge/batch',
        method: 'post',
        data: judges
    })
}

/**
 * 删除评委
 * @param {Number} id - 评委ID
 */
export function deleteJudge(id) {
    return request({
        url: `/judge/${id}`,
        method: 'delete'
    })
}

/**
 * 批量删除评委
 * @param {Array} ids - 评委ID数组
 */
export function deleteJudgeBatch(ids) {
    return request({
        url: '/judge/del/batch',
        method: 'post',
        data: ids
    })
}

/**
 * 获取所有评委
 */
export function getAllJudges() {
    return request({
        url: '/judge',
        method: 'get'
    })
}

/**
 * 获取单个评委
 * @param {Number} id - 评委ID
 */
export function getJudgeById(id) {
    return request({
        url: `/judge/${id}`,
        method: 'get'
    })
}

/**
 * 分页查询评委（带条件查询）
 * @param {Object} params - 查询参数
 * {
 *   pageNum: Number,
 *   pageSize: Number,
 *   filters: JudgeQueryDTO
 * }
 */
export function getJudgePage(params) {
    return request({
        url: '/judge/page',
        method: 'post',
        params: {
            pageNum: params.pageNum,
            pageSize: params.pageSize
        },
        data: params.filters || {}  // JudgeQueryDTO 作为请求体
    })
}

// 评委推荐接口
export function recommendJudges(data) {
    return request({
        url: '/judge/recommend',
        method: 'post',
        data
    });
}


/**
 * 按专业组查询全部评委
 * @param {String} specialty - 专业组名称（如"油气勘探"、"钻采工程"）
 */
export function getJudgesBySpecialty(specialty) {
    return request({
        url: '/judge/by-specialty',
        method: 'get',
        params: {
            specialty: specialty
        }
    })
}

/**
 * 评委身份验证
 * @param {Object} authDTO - 身份验证参数
 * {
 *   judgeCode: String,  // 评审编码（必填）
 *   name: String,       // 评委姓名（可选，预留扩展）
 *   specialty: String   // 专业组（可选，预留扩展）
 * }
 */
export function authenticateJudge(authDTO) {
    return request({
        url: '/judge/authenticate',
        method: 'post',
        data: authDTO
    })
}

/**
 * 导出评委信息到Excel
 * @param {String} specialty - 专业组名称（可选，为空则导出所有）
 * @returns {Promise} - 返回包含二进制文件的Promise
 */
export function exportJudges(specialty) {
    return request({
        url: '/judge/export',
        method: 'get',
        params: {
            specialty: specialty
        },
        responseType: 'blob',  // 重要：指定响应类型为blob以处理二进制文件
        headers: {
            'Accept': 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet'
        }
    })
}